
//636.函数的独占时间
class Solution {
public:
    vector<int> exclusiveTime(int n, vector<string>& logs) {
        //使用一个长度为n的数组存储结果
        //因为函数的调用要通过压栈的出栈来实现,这就类似于栈的先进后出的模式,所以可以使用栈来模拟函数调用
        //栈中要存放两个数据:函数编号,起始时间
        vector<int> ret(n);

        stack<int> st;
        int prev=0;
        for(auto& str:logs)
        {
            int index,time;
            char type[10];
            sscanf(str.c_str(),"%d:%[^:]:%d",&index,type,&time);

            if(type[0]=='s') 
            {
                if(!st.empty()) ret[st.top()]+=time-prev;
                st.push({index});
                prev=time;
            }
            else
            {
                ret[index]+=time-prev+1;
                st.pop();
                prev=time+1;
            }
        }
        return ret;
    }
};